[Redshift] 誕生日から年齢を計算する
本来 Redshift でこのような操作を行う事はあまり無いのかもしれませんが、機会があったので備忘録的に残しておきたいと思います。
残念ながら Redshift では「AGE」関数が廃止されているので正攻法となります。
DATEDIFF (YEAR, birth_date, GETDATE ()) + (CASE WHEN DATE_PART (doy, birth_date) > DATE_PART (doy, GETDATE ()) THEN - 1 ELSE 0 END);
まず本年と誕生年の差分(年)を取得し、
DATEDIFF (YEAR, birth_date, GETDATE ())
今日が誕生日付よりも前の場合には1年引きます。
+ (CASE WHEN DATE_PART (doy, birth_date) > DATE_PART (doy, GETDATE ()) THEN - 1 ELSE 0 END)
「doy」は day of year で、日付がその年の何日目かを表します。
Redshift は Postgresql ベースですが、異なる点も多岐にわたるので注意が必要ですね。